package com.atty.dms.service;

import com.atty.dms.common.convention.result.Result;
import com.atty.dms.dao.entity.PreferenceDO;
import com.atty.dms.dto.req.PreferenceCreateReqDTO;
import com.atty.dms.dto.req.PreferenceUpdateReqDTO;
import com.atty.dms.dto.resp.PreferenceRespDTO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * ClassName: PreferenceService
 * Package: com.atty.dms.service
 * Description:
 *
 * @Author: tony
 * @Create : 2025/4/19 16:07
 * @Version : 1.0
 */
public interface PreferenceService extends IService<PreferenceDO> {

    /**
     * 根据用户ID获取偏好信息
     *
     * @param userId 用户ID
     * @return 偏好信息的封装结果
     */
    PreferenceRespDTO getPreferenceByUserId(Long userId);

    /**
     * 根据用户名获取偏好信息
     * @param username
     * @return
     */
    PreferenceRespDTO getPreferenceByUsername(String username);

    /**
     * 创建偏好信息
     *
     * @param requestParam 创建偏好信息的请求参数
     * @return 操作结果
     */
    void createPreference(PreferenceCreateReqDTO requestParam);

    /**
     * 更新偏好信息
     *
     * @param userId       用户ID
     * @param requestParam 更新偏好信息的请求参数
     * @return 操作结果
     */
    void updatePreference(Long userId, PreferenceUpdateReqDTO requestParam);

    /**
     * 删除偏好信息
     *
     * @param userId 用户ID
     * @return 操作结果
     */
    void deletePreference(Long userId);

    /**
     * 分页查询偏好信息
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page<PreferenceRespDTO> getAllPreferenceByPage(int pageNum, int pageSize);
}